25 תשובות
הphpmyadmin לא מוכן לקבל שם מסד של יותר מ2 מגה
תבצע export למסד ואחר כך תריץ את התוכן שלו עם multi_query.
איך אני עושה את זה?
עם file_get_contents או fread תקרא את תוכן הקובץ, ותריץ אותו עם multi_query (מתודה של המחלקה mysqli, את החלופה שלה ב-pdo אני לא מכיר, אבל זה לא משנה כי אתה עושה את זה באופן חד פעמי).
אבל הקובץ הוא יותר מחצי ג'יגה,
זה אמור להפסיק את הפעולה שלו תוך 90 שניות.
ואת זה אתה יכול לשנות באמצעות htaccess, אני חושב:
אתה יכול להעלות פשוט את הקובץ לשרת דרך FTP ואחרי זה להפעיל משהו כזה
mysql_select_db(..);
mysql_query('source /path/to/file.sql')
לא עוזר.
הקוד שלי -
$mysql_host = "****";
$mysql_database = "****";
$mysql_user = "****";
$mysql_password = "****";
$link = mysql_connect($mysql_host, $mysql_user, $mysql_password);
if (!$link) {
die('Could not connect: ' . mysql_error());
}
mysql_select_db($mysql_database);
if (mysql_query("****.sql")) {
echo "success";
}
?>
עדיין לא רץ, יכול להיות שה קשור שנאי משתמש בcPanle ולא בDA?
הקוד עכשיו:
$mysql_host = "****";
$mysql_database = "****";
$mysql_user = "****";
$mysql_password = "****";
$link = mysql_connect($mysql_host, $mysql_user, $mysql_password);
if (!$link) {
die('Could not connect: ' . mysql_error());
}
mysql_select_db($mysql_database);
if (mysql_query("source /home/****/****.sql")) {
echo "success";
}
?>
אין הודעת שגיאה, אני מקבל דף לבן
במקרה שהשאילתא לא תקינה תקבל דף לבן, תוסיף ELSE לתנאי.
או שתעתיק את זה:
$mysql_host = "****";
$mysql_database = "****";
$mysql_user = "****";
$mysql_password = "****";
$link = mysql_connect($mysql_host, $mysql_user, $mysql_password);
if (!$link) {
die('Could not connect: ' . mysql_error());
}
mysql_select_db($mysql_database);
if (mysql_query("source /home/****/****.sql")) {
echo "success";
} else {
echo mysql_error();
}
?>
השגיאה היא -
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'source /home/****/****.sql' at line 1
כנראה שmysql_query לא תומך, תתחבר דרך shell .
עכשיו -
Warning: exec() has been disabled for security reasons in /home/****/public_html/runup.php on line 15
if ($mysqli->multi_query(file_get_contents('path/to/file.sql'))) {
echo 'success';
}
else {
echo 'failed';
}
המסד גדול מידי -
Fatal error: Allowed memory size of 67108864 bytes exhausted (tried to allocate 551561005 bytes) in /home/****/public_html/runup.php on line 19
יש כמה אפשרויות:
א. תחלק את הקובץ ל10 חלקים.
ב. PMA - סוג של מדריך..
ג. BigDump - אתר רשמי.
בהצלחה.
לפני שלוש כתבתי קוד לשחזור import export של phpmyadmin
אולי הוא יעזור.
אלכס הקוד שלך יכול לגרום לבעייה אם יש איזה ; שלא מפריד בין שאילתות.
צודק. הוא יכול :)
יש שם עוד הרבה בעיות אבל יש גם סיכוי נמוך שהוא יפתור לו את הבעיה.
שוב מופיע שהמסד גדול מידי..
לא הבנתי מה אני עושה עם PMA,
bigdump לא עבד בכלל.